diff --git a/init/init-work.el b/init/init-work.el
new file mode 100644
index 0000000..ccdb394
--- /dev/null
+++ b/init/init-work.el
@@ -0,0 +1,275 @@
+;;; init.el --- Emacs configuration
+
+;; Copyright (C) 2019 Luigi Santivetti
+
+;; Author: Luigi Santivetti <luigi.santivetti@gmail.com>
+
+;; This program is free software. You can redistribute it and/or modify it under
+;; the terms of the GPL, v3.
+;;
+;; This program is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+;; FOR A PARTICULAR PURPOSE.
+;;
+;; See http://www.wtfpl.net/.
+
+;;; Commentary:
+
+;; Faces are manually edited and vaguely recall SublimeText, I find it balanced.
+;; This configuration file works for me, but I DO NOT KNOW lisp, when you find
+;; any problem let me know the fix :P - thanks.
+
+;;; Code:
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Debian Stretch Emacs default version
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(when (< (string-to-number (concat
+			    (number-to-string emacs-major-version)
+			    "."
+			    (number-to-string emacs-minor-version))) 24.4)
+  (error "Version >= 24.5 is required."))
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Install packages
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(require 'package)
+(package-initialize t)
+
+(add-to-list 'package-archives
+	     '("melpa" . "https://melpa.org/packages/") t)
+(add-to-list 'package-archives
+	     '("gnu" . "https://elpa.gnu.org/packages/"))
+
+(package-initialize)
+
+(setq package-selected-packages
+      '(diff-hl
+	multiple-cursors
+	smooth-scroll
+	markdown-mode
+	smart-mode-line-powerline-theme
+	rainbow-delimiters
+	nlinum))
+
+(unless package-archive-contents
+  (package-refresh-contents))
+
+(dolist (package package-selected-packages)
+  (unless (package-installed-p package)
+    (message "Missing packages detected, please wait...")
+    (package-install package)))
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Custom set variables
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(custom-set-variables
+ '(column-number-mode t)
+ '(cua-mode t nil (cua-base))
+ '(custom-enabled-themes (quote (smart-mode-line-powerline)))
+ '(custom-safe-themes
+   (quote
+    ("84d2f9eeb3f82d619ca4bfffe5f157282f4779732f48a5ac1484d94d5ff5b279" default)))
+ '(fill-column 80)
+ '(global-hl-line-mode t)
+ '(nlinum-highlight-current-line t)
+ '(global-nlinum-mode t)
+  '(inhibit-startup-screen t)
+ '(show-paren-mode t)
+ '(tool-bar-mode nil))
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Custom set faces
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(custom-set-faces
+ '(default ((t (:background "#343D46" :foreground "#D8DEE9" :slant normal
+			    :weight normal :width normal :foundry "adobe"
+			    :family "Source Code Pro"))))
+ '(font-lock-comment-face ((t (:background "#343D46" :foreground "#848B97"))))
+ '(fringe ((t (:background "#343D46"))))
+ '(hl-line ((t (:background "#2C3133" :weight bold))))
+ '(nlinum-current-line ((t (:background "#2C3133" :foreground "white"
+					:weight bold :height 80))))
+ '(nlinum ((t (:slant normal :width ultra-condensed :foreground "#848B97"))))
+ '(mode-line ((t (:background "#4E5A65" :foreground "#D8DEE9" :box nil))))
+ '(mode-line-buffer-id-inactive ((t (:inherit mode-line-buffer-id
+					      :background "#757B81"
+					      :foreground "#D8DEE9"))))
+ '(mode-line-highlight ((t (:box (:line-width 2 :color "#4E5A65"
+					      :style released-button)))))
+ '(mode-line-inactive ((t (:background "#4E5A65" :foreground "#4E5A65"
+				       :box nil))))
+ '(powerline-active1 ((t (:inherit sml/global :background "#4E5A65"
+				   :foreground "#D8DEE9"))))
+ '(powerline-active2 ((t (:inherit sml/global :background "#757B81"
+				   :foreground "#D8DEE9"))))
+ '(powerline-inactive1 ((t (:inherit mode-line-inactive
+				     :background "#4E5A65"))))
+ '(powerline-inactive2 ((t (:inherit mode-line-inactive
+				     :background "#4E5A65"))))
+ '(rainbow-delimiters-depth-1-face ((t (:foreground "dark orange"))))
+ '(rainbow-delimiters-depth-2-face ((t (:foreground "deep pink"))))
+ '(rainbow-delimiters-depth-3-face ((t (:foreground "chartreuse"))))
+ '(rainbow-delimiters-depth-4-face ((t (:foreground "deep sky blue"))))
+ '(rainbow-delimiters-depth-5-face ((t (:foreground "yellow"))))
+ '(rainbow-delimiters-depth-6-face ((t (:foreground "orchid"))))
+ '(rainbow-delimiters-depth-7-face ((t (:foreground "spring green"))))
+ '(rainbow-delimiters-depth-8-face ((t (:foreground "sienna1"))))
+ '(region ((t (:background "#4E5A65" :foreground "#D8DEE9"))))
+ '(sml/col-number ((t (:inherit sml/global :background "#4E5A65"
+				:foreground "white" :weight bold))))
+ '(sml/filename ((t (:inherit sml/global :background "#4E5A65"
+			      :foreground "black"))))
+ '(sml/global ((t (:background "#4E5A65" :foreground "#D8DEE9"))))
+ '(sml/line-number ((t (:inherit sml/global :background "#4E5A65"
+				 :foreground "White" :weight bold))))
+ '(sml/modes ((t (:inherit sml/global :background "#757B81"
+			   :foreground "Black"))))
+ '(sml/mule-info ((t (:inherit sml/global :background "#4E5A65"))))
+ '(sml/name-filling ((t (:inherit sml/prefix :background "#757B81"
+				  :weight normal))))
+ '(sml/not-modified ((t (:inherit sml/global :background "#4E5A65"))))
+ '(sml/numbers-separator ((t (:inherit sml/col-number :background "#4E5A65"))))
+ '(sml/position-percentage ((t (:inherit sml/prefix :background "#757B81"
+					 :foreground "orange" :weight normal))))
+ '(sml/prefix ((t (:inherit sml/global :background "#4E5A65"
+			    :foreground "orange"))))
+ '(sml/process ((t (:inherit sml/prefix :background "#757B81"))))
+ '(sml/remote ((t (:inherit sml/global :background "#4E5A65"))))
+ '(sml/time ((t (:inherit sml/global :background "black"
+			  :foreground "dark orange"))))
+ '(sml/vc ((t (:inherit sml/git :background "#757B81" :foreground "#0000aa"))))
+ '(sml/vc-edited ((t (:inherit sml/prefix :background "#757B81"
+			       :foreground "#330000")))))
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Smoother scroll
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(setq mouse-wheel-scroll-amount '(1 ((shift) . 1))) ;; one line at a time
+(setq mouse-wheel-progressive-speed nil) ;; don't accelerate scrolling
+(setq mouse-wheel-follow-mouse 't) ;; scroll window under mouse
+(setq scroll-step 1) ;; keyboard scroll one line at a time
+(setq margin 1) ;; keyboard scroll one line at a time
+(require 'smooth-scroll)
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Buffer list cleanup
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(add-hook 'kill-buffer-hook
+	  (lambda ()
+	    (setq buffer-name-history
+		  (delete (buffer-name) buffer-name-history))))
+(setq history-delete-duplicates t)
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Rainbow delimiters
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(add-hook 'prog-mode-hook #'rainbow-delimiters-mode)
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Powerline theme
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(setq powerline-default-separator 'arrow)
+(setq sml/theme 'powerline)
+(require 'smart-mode-line)
+(sml/setup)
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Fringe
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(fringe-mode '(10 . 0))
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Line number format
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(setq nlinum-format "%5.5s")
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Highlight matching bracket
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(show-paren-mode 1)
+(setq show-paren-delay 0)
+(require 'paren)
+(set-face-background 'show-paren-match (face-background 'default))
+(set-face-foreground 'show-paren-match "#def")
+(set-face-attribute 'show-paren-match nil :weight 'extra-bold)
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Custom bash mode, thanks gker
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(defun gker-setup-sh-mode ()
+  "My own personal preferences for `sh-mode'.
+
+This is a custom function that sets up the parameters I usually
+prefer for `sh-mode'.  It is automatically added to
+`sh-mode-hook', but is can also be called interactively."
+  (interactive)
+  (setq sh-basic-offset 4
+	sh-indentation 4
+	tab-width 4))
+(add-hook 'sh-mode-hook 'gker-setup-sh-mode)
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Git diff hl
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(require 'diff-hl)
+(global-diff-hl-mode 1)
+(diff-hl-flydiff-mode 1)
+(add-hook 'dired-mode-hook 'diff-hl-dired-mode)
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Multiple cursors
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(require 'multiple-cursors)
+(global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines)
+(global-set-key (kbd "M-<down>") 'mc/mark-next-like-this)
+(global-set-key (kbd "M-<up>") 'mc/mark-previous-like-this)
+(global-set-key (kbd "M-C-<down>") 'mc/mark-all-like-this)
+(global-set-key (kbd "C-S-<mouse-1>") 'mc/add-cursor-on-click)
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Disable beep
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(setq ring-bell-function 'ignore)
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Stop spamming files
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(setq make-backup-files nil) ; stop creating backup~ files
+(setq auto-save-default nil) ; stop creating #autosave# files
+(setq create-lockfiles nil) ; stop hard links
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; No scroll bar in minibuffer
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(set-window-scroll-bars (minibuffer-window) nil nil)
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Furter customization for linum and left margin width
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+;(eval-after-load "linum"
+;  '(set-face-attribute 'linum nil :height 80))
+(set-default-font "Source Code Pro-12")
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Maximise Emacs
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(add-to-list 'default-frame-alist '(fullscreen . maximized))
+
+;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+;; Mail client
+;;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';;
+(defconst user-init-dir
+  (cond ((boundp 'user-emacs-directory)
+	 user-emacs-directory)
+	((boundp 'user-init-directory)
+	 user-init-directory)
+	(t "~/.emacs.d/")))
+
+(defun load-user-file (file)
+  (interactive "f")
+  "Load a file in current user's configuration directory"
+  (load-file (expand-file-name file user-init-dir)))
+(load-user-file "mu4e-config.el")
+
+;;; init.el ends here
